package com.canaan.business.service.bill;

import java.util.List;
import com.canaan.business.domain.bill.MaterialPreparationDetail;

/**
 * 生产备料清单Service接口
 *
 * @author huangxs
 * @date 2023-09-13
 */
public interface IMaterialPreparationDetailService {
    /**
     * 查询生产备料清单
     *
     * @param id 生产备料清单主键
     * @return 生产备料清单
     */
    MaterialPreparationDetail selectMaterialPreparationDetailById(Long id);

    /**
     * 查询生产备料清单列表
     *
     * @param materialPreparationDetail 生产备料清单
     * @return 生产备料清单集合
     */
    List<MaterialPreparationDetail> selectMaterialPreparationDetailList(MaterialPreparationDetail materialPreparationDetail);

    /**
     * 新增生产备料清单
     *
     * @param materialPreparationDetail 生产备料清单
     * @return 结果
     */
    int insertMaterialPreparationDetail(MaterialPreparationDetail materialPreparationDetail);

    /**
     * 批量新增生产备料清单
     *
     * @param materialPreparationDetailList 生产备料清单列表
     * @return 结果
     */
    int batchInsertMaterialPreparationDetail(List<MaterialPreparationDetail> materialPreparationDetailList);

    /**
     * 修改生产备料清单
     *
     * @param materialPreparationDetail 生产备料清单
     * @return 结果
     */
    int updateMaterialPreparationDetail(MaterialPreparationDetail materialPreparationDetail);

    /**
     * 批量修改生产备料清单
     *
     * @param materialPreparationDetailList 生产备料清单列表
     * @return 结果
     */
    int batchUpdateMaterialPreparationDetail(List<MaterialPreparationDetail> materialPreparationDetailList);

    /**
     * 批量删除生产备料清单
     *
     * @param ids 需要删除的生产备料清单主键集合
     * @return 结果
     */
    int deleteMaterialPreparationDetailByIds(Long[] ids);

    /**
     * 删除生产备料清单信息
     *
     * @param id 生产备料清单主键
     * @return 结果
     */
    int deleteMaterialPreparationDetailById(Long id);

    /**
     * 查询生产备料清单
     *
     * @param no 编号
     * @return 生产备料清单
     */
    MaterialPreparationDetail selectMaterialPreparationDetailByNo(String no);

    /**
     * 批量删除生产备料清单
     *
     * @param nos 需要删除的编号集合
     * @return 结果
     */
    int deleteMaterialPreparationDetailByNos(String[] nos);

    /**
     * 删除生产备料清单信息
     *
     * @param no 编号
     * @return 结果
     */
    int deleteMaterialPreparationDetailByNo(String no);


    /**
     * 根据订单编号查询备料清单
     * @param orderNo
     * @return
     */
    List<MaterialPreparationDetail> selectByOrderNo(String orderNo);

}
